package com.example.demo.design.GoF.observer.ring;

/**
 * 分析：在本实例中，学校的“铃”是事件源和目标，“老师”和“学生”是事件监听器和具体观察者，
 * “铃声”是事件类。学生和老师来到学校的教学区，都会注意学校的铃，这叫事件绑定；
 * 当上课时间或下课时间到，会触发铃发声，这时会生成“铃声”事件；
 * 学生和老师听到铃声会开始上课或下课，这叫事件处理。这个实例非常适合用观察者模式实现，图 3 给出了学校铃声的事件模型。
 *
 * @author luowj12
 * @since 2021/5/8 15:31
 */
public class BellEventTest {

    public static void main(String[] args) {
        BellEventSource bell = new BellEventSource();    //铃（事件源）
        bell.addPersonListener(new TeachEventListener()); //注册监听器（老师）
        bell.addPersonListener(new StuEventListener());    //注册监听器（学生）
        bell.ring(true);   //打上课铃声
        System.out.println("------------");
        bell.ring(false);  //打下课铃声
    }

}
